﻿Imports System.Data.SqlClient
Imports DNP.GestionComercial.BE
Imports DNP.DevNetPeru.Data

Public Class OrdenCompraDAL

    Public Function Guardar(ByRef obj As OrdenCompraBE, ByVal usuario As String) As RespuestaBE

        Dim res As New RespuestaBE
        Try

            Using cmd As New SqlCommand("COM_INS_COM_ORDENCOMPRA")

                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("P_NORD_CODIGO", SqlDbType.Int).Value = IIf(String.IsNullOrEmpty(obj.CORD_NUM_ORDEN), 0, obj.NORD_CODIGO)
                cmd.Parameters.Add("P_NPER_CODIGO", SqlDbType.Int).Value = If(IsDBNull(obj.NEMP_CODIGO), 0, obj.NEMP_CODIGO)
                cmd.Parameters.Add("P_NREP_CODIGO", SqlDbType.Int).Value = If(IsDBNull(obj.NREP_CODIGO), 0, obj.NREP_CODIGO)
                cmd.Parameters.Add("P_DORD_FECHA", SqlDbType.DateTime).Value = If(IsDBNull(obj.DORD_FECHA), 0, obj.DORD_FECHA)
                cmd.Parameters.Add("P_CORD_TIP_COMP", SqlDbType.VarChar).Value = IIf(String.IsNullOrEmpty(obj.CORD_TIP_COMP), "", obj.CORD_TIP_COMP)
                cmd.Parameters.Add("P_CORD_NUM_COMP", SqlDbType.VarChar).Value = If(obj.CORD_NUM_COMP, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CORD_NUM_ORDEN", SqlDbType.VarChar).Value = If(obj.CORD_NUM_ORDEN, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CORD_SUBTOTAL", SqlDbType.Decimal).Value = If(obj.CORD_SUBTOTAL, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CORD_IGV", SqlDbType.Decimal).Value = If(obj.CORD_IGV, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CORD_TOTAL", SqlDbType.Decimal).Value = If(obj.CORD_TOTAL, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CORD_ESTADO", SqlDbType.Char).Value = If(obj.CORD_ESTADO, DirectCast(DBNull.Value, Object))
                cmd.Parameters.Add("P_CAUDI_USR_INS", SqlDbType.VarChar).Value = usuario

                cmd.Parameters.Add("P_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output

                If BaseDatos.Execute(cmd) > 0 Then
                    obj.NORD_CODIGO = cmd.Parameters("p_NORD_CODIGO").Value
                    obj.CORD_NUM_ORDEN = cmd.Parameters("P_CORD_NUM_ORDEN").Value
                    res.Mensaje = cmd.Parameters("p_MENSAJE").Value

                    If res.Mensaje.StartsWith("-1@") Then
                        res.Respuesta = False
                        res.Mensaje = res.Mensaje.Split("@")(1)
                    Else
                        res.Respuesta = True
                        res.ValorRertono = obj
                    End If

                End If

            End Using

        Catch ex As Exception
            res.ValorRertono = New Collection
            res.Respuesta = False
            res.Mensaje = ex.ToString

        End Try
        Return res

    End Function

    Public Function Eliminar(ByVal Codigo As String, ByVal Usuario As String) As RespuestaBE

        Dim res As New RespuestaBE

        Try
            Using cmd As New SqlCommand("COM_DEL_COM_ORDENCOMPRA")

                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("P_NORD_CODIGO", SqlDbType.Int).Value = Codigo
                cmd.Parameters.Add("p_USUARIO", SqlDbType.VarChar).Value = Usuario
                cmd.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output

                If BaseDatos.Execute(cmd) > 0 Then

                    res.Mensaje = cmd.Parameters("p_MENSAJE").Value
                    If res.Mensaje.StartsWith("-1@") Then
                        res.Respuesta = False
                        res.Mensaje = res.Mensaje.Split("@")(1)
                    Else
                        res.Respuesta = True
                    End If
                End If

            End Using

        Catch ex As Exception
            res.ValorRertono = New Collection
            res.Respuesta = False
            res.Mensaje = ex.ToString

        End Try
        Return res

    End Function

    Public Function Obtener(ByVal codigo As Integer) As RespuestaBE

        Dim res As New RespuestaBE
        Dim obj As New OrdenCompraBE
        Try
            Using cmd As New SqlCommand("COM_SEL_COM_ORDENCOMPRA")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("P_NORD_CODIGO", SqlDbType.VarChar).Value = codigo
                Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    If dr.HasRows Then
                        If dr.Read() Then
                            Utils.CreaObjeto(obj, dr)
                        End If
                    End If
                End Using
            End Using
            res.ValorRertono = obj
            res.Respuesta = True

        Catch ex As Exception

            res.ValorRertono = New Collection
            res.Respuesta = False
            res.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 

        End Try

        Return res
    End Function

    Public Function ListarTodo(ByVal codigo As Integer) As RespuestaBE

        Dim res As New RespuestaBE
        Dim lst As New List(Of OrdenCompraBE)

        Try
            Using cmd As New SqlCommand("COM_SELALL_COM_ORDENCOMPRA")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("P_NORD_CODIGO", SqlDbType.VarChar).Value = codigo
                Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    If dr.HasRows Then
                        If dr.Read() Then
                            Utils.CreaLista(lst, dr)
                        End If
                    End If
                End Using
            End Using
            res.ValorRertono = lst
            res.Respuesta = True

        Catch ex As Exception

            res.ValorRertono = New Collection
            res.Respuesta = False
            res.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 

        End Try

        Return res
    End Function

End Class
